Set the working directory to H:/Projects/11000/11187/TS/Task 3.

Load the Scott_County_CR78_trips_78.csv file

CR_78 <- read.csv("H:/Projects/11000/11187/TS/Task 3/CR 78/scott_county_CR78_trips.csv",stringsAsFactors = FALSE)
Link_dist_78 <-  readxl::read_xlsx('H:/Projects/11000/11187/TS/Task 3/CR 78/scott_county_CR78_trips.xlsx',sheet = 'LinkDistances')
CR_42 <- read.csv("H:/Projects/11000/11187/TS/Task 3/CR 42/scott_county_CR42_trips.csv",stringsAsFactors = FALSE)
Link_dist_42 <-  readxl::read_xlsx('H:/Projects/11000/11187/TS/Task 3/CR 42/scott_county_CR42_trips.xlsx',sheet = 'LinkDistances')

The dimensions of the CR_78 dataset are 2063 rows and 1020 columns. The dimensions of the CR_42 dataset are 994 rows and 1020 columns.

Load the segment from the File Geodatabase on the H Drive project folder.

fgdb <- "H:/Projects/11000/11187/TS/Task 3/Scott County.gdb"
CR_78_seg <- readOGR(dsn=fgdb,layer="CR_78_seg")
OGR data source with driver: OpenFileGDB 
Source: "H:/Projects/11000/11187/TS/Task 3/Scott County.gdb", layer: "CR_78_seg"
with 18 features
It has 25 fields
CR_42_seg <- readOGR(dsn=fgdb,layer="CR_42_seg")
OGR data source with driver: OpenFileGDB 
Source: "H:/Projects/11000/11187/TS/Task 3/Scott County.gdb", layer: "CR_42_seg"
with 20 features
It has 25 fields
CR_78 and CR_42 Analysis Links

CR_78 and CR_42 Analysis Links

Date in ISO8601 format; converting timezone from UTC to "US/Central".
[1] 317
[1] "V297"
Date in ISO8601 format; converting timezone from UTC to "US/Central".
[1] 290
[1] "V270"

Scott County

CR_78

gg <-  ggplot(tripflag_summary_42[tripflag_summary_42$Total_Dist<50,])+
  geom_histogram(aes(x=Total_Dist),color='black',fill='white')+
  labs(title="Total Trip Distance histogram plot",x="Total Distance (miles)", y = "Count")
  
ggplotly(gg)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Start Locations:

End Locations:

CR_42

gg <-  ggplot(tripflag_summary_78[tripflag_summary_78$Total_Dist<50,])+
  geom_histogram(aes(x=Total_Dist),color='black',fill='white')+
  labs(title="Total Trip Distance histogram plot",x="Total Distance (miles)", y = "Count")
  
ggplotly(gg)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Start Locations:

End Locations:

LS0tDQp0aXRsZTogIlRyaXAgRnJlcSBBbmFseXNpcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyLGVjaG89RkFMU0UsaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkoc3RyaW5ncikNCmxpYnJhcnkoZm9yZWNhc3QpDQpsaWJyYXJ5KGxlYWZsZXQpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocmVzaGFwZTIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShEVCkNCmxpYnJhcnkocmdkYWwpDQpvcHRpb25zKGtuaXRyLnRhYmxlLmZvcm1hdCA9ICJodG1sIikgDQpgYGANCg0KDQpTZXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIEg6L1Byb2plY3RzLzExMDAwLzExMTg3L1RTL1Rhc2sgMy4NCg0KYGBge3IgJ3NldHVwJyxpbmNsdWRlPUZBTFNFfQ0KcmVxdWlyZShrbml0cikNCm9wdHNfa25pdCRzZXQocm9vdC5kaXIgPSAiSDovUHJvamVjdHMvMTEwMDAvMTExODcvVFMvVGFzayAzL1IiKQ0KZGlyKCkNCmBgYA0KDQoNCkxvYWQgdGhlIFNjb3R0X0NvdW50eV9DUjc4X3RyaXBzXzc4LmNzdiBmaWxlDQoNCmBgYHtyfQ0KDQoNCkNSXzc4IDwtIHJlYWQuY3N2KCJIOi9Qcm9qZWN0cy8xMTAwMC8xMTE4Ny9UUy9UYXNrIDMvQ1IgNzgvc2NvdHRfY291bnR5X0NSNzhfdHJpcHMuY3N2IixzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpDQoNCkxpbmtfZGlzdF83OCA8LSAgcmVhZHhsOjpyZWFkX3hsc3goJ0g6L1Byb2plY3RzLzExMDAwLzExMTg3L1RTL1Rhc2sgMy9DUiA3OC9zY290dF9jb3VudHlfQ1I3OF90cmlwcy54bHN4JyxzaGVldCA9ICdMaW5rRGlzdGFuY2VzJykNCg0KQ1JfNDIgPC0gcmVhZC5jc3YoIkg6L1Byb2plY3RzLzExMDAwLzExMTg3L1RTL1Rhc2sgMy9DUiA0Mi9zY290dF9jb3VudHlfQ1I0Ml90cmlwcy5jc3YiLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkNCg0KTGlua19kaXN0XzQyIDwtICByZWFkeGw6OnJlYWRfeGxzeCgnSDovUHJvamVjdHMvMTEwMDAvMTExODcvVFMvVGFzayAzL0NSIDQyL3Njb3R0X2NvdW50eV9DUjQyX3RyaXBzLnhsc3gnLHNoZWV0ID0gJ0xpbmtEaXN0YW5jZXMnKQ0KDQpgYGANCg0KVGhlIGRpbWVuc2lvbnMgb2YgdGhlIENSXzc4IGRhdGFzZXQgYXJlIGByIHBhc3RlKGRpbShDUl83OClbMV0sJ3Jvd3MgYW5kJyxkaW0oQ1JfNzgpWzJdLCdjb2x1bW5zJylgLg0KVGhlIGRpbWVuc2lvbnMgb2YgdGhlIENSXzQyIGRhdGFzZXQgYXJlIGByIHBhc3RlKGRpbShDUl80MilbMV0sJ3Jvd3MgYW5kJyxkaW0oQ1JfNDIpWzJdLCdjb2x1bW5zJylgLg0KDQpMb2FkIHRoZSBzZWdtZW50IGZyb20gdGhlIEZpbGUgR2VvZGF0YWJhc2Ugb24gdGhlIEggRHJpdmUgcHJvamVjdCBmb2xkZXIuDQoNCmBgYHtyfQ0KDQpmZ2RiIDwtICJIOi9Qcm9qZWN0cy8xMTAwMC8xMTE4Ny9UUy9UYXNrIDMvU2NvdHQgQ291bnR5LmdkYiINCkNSXzc4X3NlZyA8LSByZWFkT0dSKGRzbj1mZ2RiLGxheWVyPSJDUl83OF9zZWciKQ0KQ1JfNDJfc2VnIDwtIHJlYWRPR1IoZHNuPWZnZGIsbGF5ZXI9IkNSXzQyX3NlZyIpDQoNCmBgYA0KDQohW0NSXzc4IGFuZCBDUl80MiBBbmFseXNpcyBMaW5rc10oU2VnbWVudF9PdmVydmlldy5wbmcpDQoNCmBgYHtyLCBlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsaW5jbHVkZT1UUlVFfQ0KQ1JfNzggJTw+JSBtdXRhdGUoRGF0ZT15bWRfaG1zKHN0YXJ0X2RhdGVfY2VudHJhbCx0ej0iVVMvQ2VudHJhbCIpKSU+JQ0KICBzZWxlY3QoLXBhdGgsZXZlcnl0aGluZygpKSU+JQ0KICBzZXBhcmF0ZShwYXRoLHJlbW92ZSA9IEZBTFNFLHNlcD0nIycsaW50byA9IHBhc3RlKCdWJyxjKDE6MTAwMCksc2VwID0gJycpKQ0KDQpzaXplIDwtIHNhcHBseShDUl83OCxmdW5jdGlvbih4KWFsbChpcy5uYSh4KSkpDQptaW4od2hpY2goc2l6ZT09VFJVRSkpDQpjb2xuYW1lcyhDUl83OClbbWluKHdoaWNoKHNpemU9PVRSVUUpKV0NCg0KQ1JfNDIgJTw+JSBtdXRhdGUoRGF0ZT15bWRfaG1zKHN0YXJ0X2RhdGVfY2VudHJhbCx0ej0iVVMvQ2VudHJhbCIpKSU+JQ0KICBzZWxlY3QoLXBhdGgsZXZlcnl0aGluZygpKSU+JQ0KICBzZXBhcmF0ZShwYXRoLHJlbW92ZSA9IEZBTFNFLHNlcD0nIycsaW50byA9IHBhc3RlKCdWJyxjKDE6MTAwMCksc2VwID0gJycpKQ0KDQpzaXplIDwtIHNhcHBseShDUl80MixmdW5jdGlvbih4KWFsbChpcy5uYSh4KSkpDQptaW4od2hpY2goc2l6ZT09VFJVRSkpDQpjb2xuYW1lcyhDUl80MilbbWluKHdoaWNoKHNpemU9PVRSVUUpKV0NCmBgYA0KDQpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQoNCmNvbF83OCA8LSBjb2xuYW1lcyhDUl83OCklaW4lIHBhc3RlKCdWJyxjKDE6Mjk3KSxzZXA9JycpDQoNCnRyaXBfY29tcG9uZW50c183OCA8LSAgbWVsdChDUl83OCxpZC52YXJzID0gYygndHJpcF9pZCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfbGF0aXR1ZGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0X2xvbmdpdHVkZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5kX2xhdGl0dWRlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmRfbG9uZ2l0dWRlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlJyksDQogICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlLnZhcnMgPSBjb2xuYW1lcyhDUl83OClbY29sXzc4XSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm5hbWUgPSAnQStCJywNCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcD0nJykgDQoNCnRyaXBfY29tcG9uZW50c183OCA8LSAgIG1lcmdlKHRyaXBfY29tcG9uZW50c183OCxMaW5rX2Rpc3RfNzgsYnk9J0ErQicpICU+JSBhcnJhbmdlKHRyaXBfaWQpDQoNCiMjI3RyaXBzXzc4IGNhbiBnbyB0aHJvdWdoIG91ciBzZWdtZW50DQojIyN0cmlwc183OCA8LSBmaWx0ZXIodHJpcF9jb21wb25lbnRzXzc4LHRyaXBfY29tcG9uZW50c183OCRgQStCYCAlaW4lIENSXzc4X3NlZyRMaW5rKQ0KIyMjI3RyaXBfaWRzIDwtIHRyaXBzXzc4WyFkdXBsaWNhdGVkKHRyaXBzXzc4JHRyaXBfaWQpLF0NCg0KY29sXzQyIDwtIGNvbG5hbWVzKENSXzQyKSVpbiUgcGFzdGUoJ1YnLGMoMToyNzApLHNlcD0nJykNCg0KdHJpcF9jb21wb25lbnRzXzQyIDwtICBtZWx0KENSXzQyLGlkLnZhcnMgPSBjKCd0cmlwX2lkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGFydF9sYXRpdHVkZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfbG9uZ2l0dWRlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmRfbGF0aXR1ZGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZF9sb25naXR1ZGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RhdGUnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmUudmFycyA9IGNvbG5hbWVzKENSXzQyKVtjb2xfNDJdLA0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUubmFtZSA9ICdBK0InLA0KICAgICAgICAgICAgICAgICAgICAgICAgc2VwPScnKSANCg0KdHJpcF9jb21wb25lbnRzXzQyIDwtICAgbWVyZ2UodHJpcF9jb21wb25lbnRzXzQyLExpbmtfZGlzdF80MixieT0nQStCJykgJT4lIGFycmFuZ2UodHJpcF9pZCkNCg0KDQpgYGANCg0KYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KIyMjZmluZCB0aGUgdG90YWwgZGlzdGFuY2UgZm9yIGVhY2ggVHJpcA0KdHJpcGZsYWdfc3VtbWFyeV83OCA8LSB0cmlwX2NvbXBvbmVudHNfNzggJT4lDQogIGdyb3VwX2J5KHRyaXBfaWQpJT4lDQogIHN1bW1hcmlzZShUb3RhbF9EaXN0ID0gc3VtKERJU1RBTkNFKSklPiUNCiAgYXJyYW5nZShkZXNjKFRvdGFsX0Rpc3QpKQ0KDQp0cmlwZmxhZ19zdW1tYXJ5Xzc4IDwtIG1lcmdlKHRyaXBmbGFnX3N1bW1hcnlfNzgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSXzc4WyxjKCJ0cmlwX2lkIiwiRGF0ZSIsInN0YXJ0X2xhdGl0dWRlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXJ0X2xvbmdpdHVkZSIsImVuZF9sYXRpdHVkZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmRfbG9uZ2l0dWRlIildLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieT0ndHJpcF9pZCcpDQoNCiMjI2RhdGF0YWJsZSh0cmlwZmxhZ19zdW1tYXJ5Xzc4LGZpbHRlcj0ndG9wJykNCg0KIyMjZmluZCB0aGUgdG90YWwgZGlzdGFuY2UgZm9yIGVhY2ggVHJpcA0KdHJpcGZsYWdfc3VtbWFyeV80MiA8LSB0cmlwX2NvbXBvbmVudHNfNDIgJT4lDQogIGdyb3VwX2J5KHRyaXBfaWQpJT4lDQogIHN1bW1hcmlzZShUb3RhbF9EaXN0ID0gc3VtKERJU1RBTkNFKSklPiUNCiAgYXJyYW5nZShkZXNjKFRvdGFsX0Rpc3QpKQ0KDQp0cmlwZmxhZ19zdW1tYXJ5XzQyIDwtIG1lcmdlKHRyaXBmbGFnX3N1bW1hcnlfNDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSXzQyWyxjKCJ0cmlwX2lkIiwiRGF0ZSIsInN0YXJ0X2xhdGl0dWRlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXJ0X2xvbmdpdHVkZSIsImVuZF9sYXRpdHVkZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmRfbG9uZ2l0dWRlIildLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieT0ndHJpcF9pZCcpDQoNCiMjI2RhdGF0YWJsZSh0cmlwZmxhZ19zdW1tYXJ5XzQyLGZpbHRlcj0ndG9wJykNCg0KYGBgDQoNCg0KYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KIyMjYXR0YWNoZWQgdG90YWwgdHJpcCBkaXN0YW5jZSB0byBlYWNoIGxpbmsNCiMjI2ZpbHRlciB0aGUgdHJpcHMgZm9yIG9ubHkgb3VyIHRyaXBzIG9mIGludGVyZXN0IGluIHNlZ21lbnQgNDINCnRyaXBfY29tcF9tZXJnZV83OCA8LSBtZXJnZSh0cmlwX2NvbXBvbmVudHNfNzgsdHJpcGZsYWdfc3VtbWFyeV83OCwNCiAgICAgICAgICAgICAgICAgICAgICAgICBieS54PSd0cmlwX2lkJyxieS55PSd0cmlwX2lkJyxhbGwueD1UUlVFKSU+JQ0KICBhcnJhbmdlKGRlc2MoVG90YWxfRGlzdCkpJT4lDQogIGZpbHRlcihgQStCYCAlaW4lIENSXzc4X3NlZyRMaW5rKSU+JQ0KICBmaWx0ZXIoVG90YWxfRGlzdDw0MCkNCg0KIyMjc3VtbWFyaXNlIHRoZSB0cmlwIGRpc3RhbmNlcyBieSBvdXIgbGlua3MgDQojIyN0aGlzIHN1bW1hcnkgaXMgZm9yIHRyaXBzIGxlc3MgdGhhbiA1MCBtaWxlcy4NCiMjI3RyaXAgdG90YWwgZGlzdGFuY2UgaXMgbm90IGFjY3VyYXRlIG91dHNpZGUgb2YgdGhpcyByYW5nZS4gDQpsaW5rX2RldGFpbHNfNzggPC0gdHJpcF9jb21wX21lcmdlXzc4ICU+JSBncm91cF9ieShgQStCYCkgJT4lDQogIHN1bW1hcmlzZShNZWFuID0gbWVhbihUb3RhbF9EaXN0KSwNCiAgICAgICAgICAgIE1heCA9IG1heChUb3RhbF9EaXN0KSwNCiAgICAgICAgICAgIE1pbiA9IG1pbihUb3RhbF9EaXN0KSwNCiAgICAgICAgICAgIFN0ZCA9IHNkKFRvdGFsX0Rpc3QpKQ0KDQojIyNkYXRhdGFibGUodHJpcHNfNzgsZmlsdGVyPSd0b3AnKQ0KDQojIyNhdHRhY2hlZCB0b3RhbCB0cmlwIGRpc3RhbmNlIHRvIGVhY2ggbGluaw0KIyMjZmlsdGVyIHRoZSB0cmlwcyBmb3Igb25seSBvdXIgdHJpcHMgb2YgaW50ZXJlc3QgaW4gc2VnbWVudCA0Mg0KdHJpcF9jb21wX21lcmdlXzQyIDwtIG1lcmdlKHRyaXBfY29tcG9uZW50c180Mix0cmlwZmxhZ19zdW1tYXJ5XzQyLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGJ5Lng9J3RyaXBfaWQnLGJ5Lnk9J3RyaXBfaWQnLGFsbC54PVRSVUUpJT4lDQogIGFycmFuZ2UoZGVzYyhUb3RhbF9EaXN0KSklPiUNCiAgZmlsdGVyKGBBK0JgICVpbiUgQ1JfNDJfc2VnJExpbmspJT4lDQogIGZpbHRlcihUb3RhbF9EaXN0PDQwKQ0KDQojIyNzdW1tYXJpc2UgdGhlIHRyaXAgZGlzdGFuY2VzIGJ5IG91ciBsaW5rcyANCiMjI3RoaXMgc3VtbWFyeSBpcyBmb3IgdHJpcHMgbGVzcyB0aGFuIDUwIG1pbGVzLg0KIyMjdHJpcCB0b3RhbCBkaXN0YW5jZSBpcyBub3QgYWNjdXJhdGUgb3V0c2lkZSBvZiB0aGlzIHJhbmdlLiANCmxpbmtfZGV0YWlsc180MiA8LSB0cmlwX2NvbXBfbWVyZ2VfNDIgJT4lIGdyb3VwX2J5KGBBK0JgKSAlPiUNCiAgc3VtbWFyaXNlKE1lYW4gPSBtZWFuKFRvdGFsX0Rpc3QpLA0KICAgICAgICAgICAgTWF4ID0gbWF4KFRvdGFsX0Rpc3QpLA0KICAgICAgICAgICAgTWluID0gbWluKFRvdGFsX0Rpc3QpLA0KICAgICAgICAgICAgU3RkID0gc2QoVG90YWxfRGlzdCkpDQoNCg0KIyMjZGF0YXRhYmxlKHRyaXBzXzQyLGZpbHRlcj0ndG9wJykNCg0KDQpgYGANCg0KDQojIyBTY290dCBDb3VudHkgey50YWJzZXQgLnRhYnNldC1mYWRlfQ0KDQojIyMgQ1JfNzgNCg0KDQpgYGB7cixlY2hvPUZBTFNFLGZpZy5oZWlnaHQ9NX0NCg0KQ1JfNzhfcGxvdCA8LSBtZXJnZShDUl83OF9zZWcsdHJpcHNfNzgsYnkueD0nTGluaycsYnkueT0nQStCJykNCg0KQ1JfNzhfcGxvdCRsYWJlbCA8LSBwYXN0ZShDUl83OF9wbG90JEFCLCdNZWFuIERpc3Q6Jyxhcy5jaGFyYWN0ZXIocm91bmQoQ1JfNzhfcGxvdCRNZWFuLDIpKSkNCg0KbGVhZmxldChkYXRhPUNSXzc4X3Bsb3Qsd2lkdGggPSAnMTAwJScpICU+JQ0KICBzZXRWaWV3KGxuZyA9IC05My41NTA4MjUsIGxhdCA9ICA0NC43NzE2MTQsIHpvb20gPSAxMyklPiUNCiAgYWRkUG9seWxpbmVzKGhpZ2hsaWdodE9wdGlvbnMgPSBoaWdobGlnaHRPcHRpb25zKGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0ID0gMiwNCiAgICAgIGJyaW5nVG9Gcm9udCA9IFRSVUUpLGxhYmVsPX5sYWJlbCkgJT4lIA0KICBhZGRQcm92aWRlclRpbGVzKHByb3ZpZGVycyRPcGVuU3RyZWV0TWFwKQ0KDQpgYGANCg0KYGBge3J9DQpnZyA8LSAgZ2dwbG90KHRyaXBmbGFnX3N1bW1hcnlfNDJbdHJpcGZsYWdfc3VtbWFyeV80MiRUb3RhbF9EaXN0PDUwLF0pKw0KICBnZW9tX2hpc3RvZ3JhbShhZXMoeD1Ub3RhbF9EaXN0KSxjb2xvcj0nYmxhY2snLGZpbGw9J3doaXRlJykrDQogIGxhYnModGl0bGU9IlRvdGFsIFRyaXAgRGlzdGFuY2UgaGlzdG9ncmFtIHBsb3QiLHg9IlRvdGFsIERpc3RhbmNlIChtaWxlcykiLCB5ID0gIkNvdW50IikNCiAgDQpnZ3Bsb3RseShnZykNCg0KYGBgDQoNCg0KU3RhcnQgTG9jYXRpb25zOg0KYGBge3IsZWNobz1GQUxTRSxmaWcuaGVpZ2h0PTV9DQppY29uX3N0YXJ0IDwtIG1ha2VJY29uKCdpY29uX3N0YXJ0LnBuZycsaWNvbldpZHRoID0gMTAsIGljb25IZWlnaHQgPSA4KQ0KZGF0YSA8LSB0cmlwZmxhZ19zdW1tYXJ5Xzc4ICU+JWZpbHRlcihUb3RhbF9EaXN0PDQwKQ0KDQpsaXN0X3JhZGl1cyA8LSBsaXN0KDE2MDkuMzQqNSwxNjA5LjM0KjEwLDE2MDkuMzQqMjAsMTYwOS4zNCo0MCkNCmxpc3RfbGFiZWwgPC0gbGlzdCgnNSBtaWxlcycsJzEwIG1pbGVzJywnMjAgbWlsZXMnLCc0MCBtaWxlcycpDQpgYGANCg0KYGBge3IsZWNobz1GQUxTRSxmaWcuaGVpZ2h0PTV9DQoNCmxlYWZsZXQoZGF0YT1kYXRhLHdpZHRoID0gJzEwMCUnKSAlPiUNCiAgc2V0VmlldyhsbmcgPSAtOTMuNTA1MDgsIGxhdCA9ICA0NC43NTMwMTksIHpvb20gPSAxMCklPiUNCiAgYWRkVGlsZXMoKSAlPiUgDQogIGFkZE1hcmtlcnMofnN0YXJ0X2xvbmdpdHVkZSx+c3RhcnRfbGF0aXR1ZGUsaWNvbiA9IGljb25fc3RhcnQsbGFiZWw9fnRyaXBfaWQpICU+JQ0KICBhZGRDaXJjbGVzKGxuZyA9IC05My41MDUwOCwgbGF0ID0gIDQ0Ljc1MzAxOSxyYWRpdXMgPSBsaXN0X3JhZGl1cywNCiAgICAgICAgICAgICBmaWxsQ29sb3IgPSAnbm9uZScsbGFiZWwgPWxpc3RfbGFiZWwpJT4lDQogIGFkZFByb3ZpZGVyVGlsZXMocHJvdmlkZXJzJE9wZW5TdHJlZXRNYXApDQoNCmBgYA0KDQoNCkVuZCBMb2NhdGlvbnM6DQoNCmBgYHtyLGVjaG89RkFMU0UsZmlnLmhlaWdodD01fQ0KDQoNCmxlYWZsZXQoZGF0YT1kYXRhLHdpZHRoID0gJzEwMCUnKSAlPiUNCiAgc2V0VmlldyhsbmcgPSAtOTMuNTA1MDgsIGxhdCA9ICA0NC43NTMwMTksIHpvb20gPSAxMCklPiUNCiAgYWRkVGlsZXMoKSAlPiUgDQogIGFkZE1hcmtlcnMofmVuZF9sb25naXR1ZGUsfmVuZF9sYXRpdHVkZSxpY29uID0gaWNvbl9lbmQsbGFiZWw9fnRyaXBfaWQpICU+JQ0KICBhZGRDaXJjbGVzKGxuZyA9IC05My41MDUwOCwgbGF0ID0gIDQ0Ljc1MzAxOSxyYWRpdXMgPSBsaXN0X3JhZGl1cywNCiAgICAgICAgICAgICBmaWxsQ29sb3IgPSAnbm9uZScsbGFiZWwgPWxpc3RfbGFiZWwpJT4lDQogIGFkZFByb3ZpZGVyVGlsZXMocHJvdmlkZXJzJE9wZW5TdHJlZXRNYXApDQoNCmBgYA0KDQoNCg0KIyMjIENSXzQyDQoNCg0KYGBge3IsZWNobz1GQUxTRSxmaWcuaGVpZ2h0PTV9DQoNCkNSXzQyX3Bsb3QgPC0gbWVyZ2UoQ1JfNDJfc2VnLHRyaXBzXzQyLGJ5Lng9J0xpbmsnLGJ5Lnk9J0ErQicpDQoNCkNSXzQyX3Bsb3QkbGFiZWwgPC0gcGFzdGUoQ1JfNDJfcGxvdCRBQiwnTWVhbiBEaXN0OicsYXMuY2hhcmFjdGVyKHJvdW5kKENSXzQyX3Bsb3QkTWVhbiwyKSkpDQoNCmxlYWZsZXQoZGF0YT1DUl80Ml9wbG90LHdpZHRoID0gJzEwMCUnKSAlPiUNCiAgc2V0VmlldyhsbmcgPSAtOTMuNTUwODI1LCBsYXQgPSAgNDQuNzcxNjE0LCB6b29tID0gMTMpJT4lDQogIGFkZFBvbHlsaW5lcyhoaWdobGlnaHRPcHRpb25zID0gaGlnaGxpZ2h0T3B0aW9ucyhjb2xvciA9ICJ3aGl0ZSIsIHdlaWdodCA9IDIsDQogICAgICBicmluZ1RvRnJvbnQgPSBUUlVFKSxsYWJlbD1+bGFiZWwpICU+JSANCiAgYWRkUHJvdmlkZXJUaWxlcyhwcm92aWRlcnMkT3BlblN0cmVldE1hcCkNCg0KYGBgDQoNCmBgYHtyfQ0KZ2cgPC0gIGdncGxvdCh0cmlwZmxhZ19zdW1tYXJ5Xzc4W3RyaXBmbGFnX3N1bW1hcnlfNzgkVG90YWxfRGlzdDw1MCxdKSsNCiAgZ2VvbV9oaXN0b2dyYW0oYWVzKHg9VG90YWxfRGlzdCksY29sb3I9J2JsYWNrJyxmaWxsPSd3aGl0ZScpKw0KICBsYWJzKHRpdGxlPSJUb3RhbCBUcmlwIERpc3RhbmNlIGhpc3RvZ3JhbSBwbG90Iix4PSJUb3RhbCBEaXN0YW5jZSAobWlsZXMpIiwgeSA9ICJDb3VudCIpDQogIA0KZ2dwbG90bHkoZ2cpDQoNCmBgYA0KDQpTdGFydCBMb2NhdGlvbnM6DQpgYGB7cixlY2hvPUZBTFNFLGZpZy5oZWlnaHQ9NX0NCmljb25fc3RhcnQgPC0gbWFrZUljb24oJ2ljb25fc3RhcnQucG5nJyxpY29uV2lkdGggPSAxMCwgaWNvbkhlaWdodCA9IDgpDQpkYXRhIDwtIHRyaXBmbGFnX3N1bW1hcnlfNDIlPiVmaWx0ZXIoVG90YWxfRGlzdDw0MCkNCg0KbGlzdF9yYWRpdXMgPC0gbGlzdCgxNjA5LjM0KjUsMTYwOS4zNCoxMCwxNjA5LjM0KjIwLDE2MDkuMzQqNDApDQpsaXN0X2xhYmVsIDwtIGxpc3QoJzUgbWlsZXMnLCcxMCBtaWxlcycsJzIwIG1pbGVzJywnNDAgbWlsZXMnKQ0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0UsZmlnLmhlaWdodD01fQ0KDQpsZWFmbGV0KGRhdGE9ZGF0YSx3aWR0aCA9ICcxMDAlJykgJT4lDQogIHNldFZpZXcobG5nID0gLTkzLjUwNTA4LCBsYXQgPSAgNDQuNzUzMDE5LCB6b29tID0gMTApJT4lDQogIGFkZFRpbGVzKCkgJT4lIA0KICBhZGRNYXJrZXJzKH5zdGFydF9sb25naXR1ZGUsfnN0YXJ0X2xhdGl0dWRlLGljb24gPSBpY29uX3N0YXJ0LGxhYmVsPX50cmlwX2lkKSAlPiUNCiAgYWRkQ2lyY2xlcyhsbmcgPSAtOTMuNTA1MDgsIGxhdCA9ICA0NC43NTMwMTkscmFkaXVzID0gbGlzdF9yYWRpdXMsDQogICAgICAgICAgICAgZmlsbENvbG9yID0gJ25vbmUnLGxhYmVsID1saXN0X2xhYmVsKSU+JQ0KICBhZGRQcm92aWRlclRpbGVzKHByb3ZpZGVycyRPcGVuU3RyZWV0TWFwKQ0KDQpgYGANCg0KDQpFbmQgTG9jYXRpb25zOg0KDQpgYGB7cixlY2hvPUZBTFNFLGZpZy5oZWlnaHQ9NX0NCg0KbGVhZmxldChkYXRhPWRhdGEsd2lkdGggPSAnMTAwJScpICU+JQ0KICBzZXRWaWV3KGxuZyA9IC05My41MDUwOCwgbGF0ID0gIDQ0Ljc1MzAxOSwgem9vbSA9IDEwKSU+JQ0KICBhZGRUaWxlcygpICU+JSANCiAgYWRkTWFya2Vycyh+ZW5kX2xvbmdpdHVkZSx+ZW5kX2xhdGl0dWRlLGljb24gPSBpY29uX2VuZCxsYWJlbD1+dHJpcF9pZCkgJT4lDQogIGFkZENpcmNsZXMobG5nID0gLTkzLjUwNTA4LCBsYXQgPSAgNDQuNzUzMDE5LHJhZGl1cyA9IGxpc3RfcmFkaXVzLA0KICAgICAgICAgICAgIGZpbGxDb2xvciA9ICdub25lJyxsYWJlbCA9bGlzdF9sYWJlbCklPiUNCiAgYWRkUHJvdmlkZXJUaWxlcyhwcm92aWRlcnMkT3BlblN0cmVldE1hcCkNCg0KYGBgDQo=